package com.ccp.dev.qbdms.dao;

import com.ccp.dev.core.basic.base.IBaseMapper;
import com.ccp.dev.qbdms.model.Commonality;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Mapper
public interface CommonalityDao extends IBaseMapper<Commonality,String> {

    /**
     * 上报操作(三级单位)
     * @param tableName 表名
     * @param ids 业务数据主键
     * @return 返回数据条数
     */
    int reportPlant(@Param("tableName") String tableName, @Param("ids") String[] ids,@Param("reportStatusTemp") String reportStatusTemp);

    /**
     * 上报操作(二级单位)  增加hospital字段的填写,在二级单位上报时填写
     * @param tableName
     * @param ids
     * @param reportStatus
     * @param hospitalCode
     * @return
     */
    int reportHospital(@Param("tableName") String tableName,@Param("ids") String[] ids,@Param("reportStatus") String reportStatus,@Param("hospitalCode")String hospitalCode);

    /**
     * 无需上报(三级单位)
     * @param tableName 表名
     * @param ids 业务数据主键
     * @return 返回数据条数
     */
    int doNotNeedReportPlant(@Param("tableName") String tableName,@Param("ids") String[] ids,@Param("reportStatus") String reportStatus);

    /**
     * 无需上报 (二级单位)
     * @param tableName 表名
     * @param ids 业务数据主键
     * @return 返回数据条数
     */
    int doNotNeedReportHospital(@Param("tableName") String tableName,@Param("ids") String[] ids,@Param("reportValue") String reportValue);

    /**
     * 退回待修改(三级单位)
     * @param tableName 表名
     * @param ids 业务数据主键
     * @return 返回数据条数
     */
    int returnAndUpdatePlant(@Param("tableName") String tableName,@Param("ids") String[] ids,@Param("reportValueTemp") String reportValueTemp,@Param("returnMsg") String returnMsg);

    /**
     * 退回待修改(二级单位)
     * @param tableName 表名
     * @param ids 业务数据主键
     * @return 返回数据条数
     */
    int returnAndUpdateHospital(@Param("tableName") String tableName,@Param("ids") String[] ids,@Param("reportValue") String reportValue,@Param("returnMsg") String returnMsg);

    /**
     * 根据上报的businessId获取所属tableName
     * @param businessKey
     * @return
     */
    String getTableNameByBusinessKey(String businessKey);

    /**
     * 流程审批完成后修改审批通过的业务数据状态(三级单位)
     * @param businessKey
     * @return
     */
    int updateBusinessStatusPlant(@Param("businessKey") String businessKey,@Param("tableName") String tableName,@Param("reportValue") String reportValue);

    /**
     * 流程审批完成后修改审批通过的业务数据状态(二级单位)
     * @param businessKey
     * @return
     */
    int updateBusinessStatusHospital(@Param("businessKey") String businessKey,@Param("tableName")String tableName,@Param("reportValue") String reportValue);

    /**
     * 流程审批完成后修改审批未通过的业务数据状态(三级单位)
     * @param businessKey
     * @return
     */
    int updateBusinessStatusPlantFail(@Param("businessKey") String businessKey,@Param("tableName") String tableName,@Param("reportValue") String reportValue);

    /**
     * 流程审批完成后修改审批未通过的业务数据状态(二级单位)
     * @param businessKey
     * @return
     */
    int updateBusinessStatusHospitalFail(@Param("businessKey") String businessKey,@Param("tableName")String tableName,@Param("reportValue") String reportValue);

    /**
     * 流程审批点击驳回根据businessId修改全部业务数据状态(三级单位)
     * @param businessKey
     * @return
     */
    int updateBusinessStatusPlantReject(@Param("businessKey") String businessKey,@Param("tableName") String tableName,@Param("reportValue") String reportValue);

    /**
     * 流程审批点击驳回根据businessId修改全部业务数据状态(二级单位)
     * @param businessKey
     * @return
     */
    int updateBusinessStatusHospitalReject(@Param("businessKey") String businessKey,@Param("tableName")String tableName,@Param("reportValue") String reportValue);

    /**
     * 根据业务主键获取数据状态(二级单位)
     * @param ids
     * @param tableName
     * @return
     */
    List<Commonality> queryBusinessStatusByBusinessIdToHospital(@Param("ids") String[] ids, @Param("tableName") String tableName);

    /**
     * 根据业务主键获取数据状态(三级单位)
     * @param ids
     * @param tableName
     * @return
     */
    List<Commonality> queryBusinessStatusByBusinessIdToPlant(@Param("ids") String[] ids, @Param("tableName") String tableName);

    /**
     * 根据业务主键修改全部业务数据状态(二级单位)
     * @param businessKey
     * @param tableName
     * @param reportValue
     * @return
     */
    int updateAllBusinessStatusToHospital(@Param("businessKey") String businessKey,@Param("tableName")String tableName,@Param("reportValue") String reportValue);

    /**
     * 根据业务主键修改全部业务数据状态(三级单位)
     * @param businessKey
     * @param tableName
     * @param reportValue
     * @return
     */
    int updateAllBusinessStatusToPlant(@Param("businessKey") String businessKey,@Param("tableName")String tableName,@Param("reportValue") String reportValue);

    /**
     * 获取未通过业务数据id
     * @param dataId
     * @param businessId
     * @return
     */
    String queryFailIdByDataAndBusinessId(@Param("dataId")String dataId,@Param("businessId")String[] businessId);

    /**
     * 获取所有业务Id
     * @param dataId
     * @return
     */
    String queryBusinessIdByDataId(@Param("dataId")String dataId);

}
